#include <vector>
#include <queue>
using namespace std;

class Solution {
public:
    typedef pair<int, int> PII;//将pair重定义，当要频繁使用pair键值对时方便调用
    int dx[4]={-1,1,0,0}; //dx数组与dy数组中的值是一一对应的
    int dy[4]={0,0,-1,1};
    vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {
        if(0 == image.size() || color == image[sr][sc])
        {
            return image;
        }
        int start_image = image[sr][sc];//初始像素点代表的原始颜色，找与原始颜色相同的像素点，然后将这些像素点的颜色修改为color
        queue<PII> q;
        q.push({sr,sc});
        while(q.size())
        {
            int a = q.front().first;
            int b = q.front().second;
            q.pop();
            image[a][b]=color;
            for(int i = 0;i<4;++i)
            {
                int x = a+dx[i];
                int y = b+dy[i];
                if(x >= 0 && x < image.size() && y >= 0 && y < image[0].size() && start_image == image[x][y])
                {
                    q.push({x,y});
                }
            }
        }
        return image;
    }
};